package com.lmaye.task;

import org.apache.commons.lang3.concurrent.BasicThreadFactory;

import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * -- 定时任务
 *
 * @author lmay.Zhou
 * @date 2019/6/6 15:38 星期四
 * @qq 379839355
 * @email lmay@lmaye.com
 */
public class TimedTask {
    /**
     * 任务线程池
     *
     * @param command      执行的任务
     * @param initialDelay 初始延迟
     * @param period       执行时间
     * @param unit         时间单位
     */
    public static void scheduledThreadPool(Runnable command, long initialDelay, long period, TimeUnit unit) {
        ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(1,
                new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(false).build());
        // 第一个参数是任务，第二个参数为首次执行的延时时间，第三个参数为定时执行的间隔时间,第四个参数是时间单位
        scheduledThreadPoolExecutor.scheduleAtFixedRate(command, initialDelay, period, unit);
    }
}
